Home > complex-toolbox > Adaptive step-size CLMS algorithms > Benveniste.m

Benveniste

PURPOSE ^

FUNCTION Benveniste() implements the Benveniste's variable step size CLMS algorithm

SYNOPSIS ^

function y = Benveniste(x,N,mu,rho)

DESCRIPTION ^

 FUNCTION Benveniste() implements the Benveniste's variable step size CLMS algorithm 

 Based on the book of A. Benveniste, M. Metivier and P. Priouret, Adaptive Algorithms and Stochastic Approximation, New York: Spinger-Verlag, 1990

 INPUT:
 x: input signal which should be scaled according to the dynamic range of nonlinearity 
 N: filter length
 mu: step-size
 rho: step-size of adaptation of mu

 OUTPUT:
 y: filter output


 Complex Valued Nonlinear Adaptive Filtering toolbox for MATLAB
 Supplementary to the book:
 
 "Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models"
 by Danilo P. Mandic and Vanessa Su Lee Goh
 
 (c) Copyright Danilo P. Mandic 2009
 http://www.commsp.ee.ic.ac.uk/~mandic
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You can obtain a copy of the GNU General Public License from
    http://www.gnu.org/copyleft/gpl.html or by writing to
    Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 ...........................................

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % FUNCTION Benveniste() implements the Benveniste's variable step size CLMS algorithm
0002 %
0003 % Based on the book of A. Benveniste, M. Metivier and P. Priouret, Adaptive Algorithms and Stochastic Approximation, New York: Spinger-Verlag, 1990
0004 %
0005 % INPUT:
0006 % x: input signal which should be scaled according to the dynamic range of nonlinearity
0007 % N: filter length
0008 % mu: step-size
0009 % rho: step-size of adaptation of mu
0010 %
0011 % OUTPUT:
0012 % y: filter output
0013 %
0014 %
0015 % Complex Valued Nonlinear Adaptive Filtering toolbox for MATLAB
0016 % Supplementary to the book:
0017 %
0018 % "Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models"
0019 % by Danilo P. Mandic and Vanessa Su Lee Goh
0020 %
0021 % (c) Copyright Danilo P. Mandic 2009
0022 % http://www.commsp.ee.ic.ac.uk/~mandic
0023 %
0024 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0025 %    This program is free software; you can redistribute it and/or modify
0026 %    it under the terms of the GNU General Public License as published by
0027 %    the Free Software Foundation; either version 2 of the License, or
0028 %    (at your option) any later version.
0029 %
0030 %    This program is distributed in the hope that it will be useful,
0031 %    but WITHOUT ANY WARRANTY; without even the implied warranty of
0032 %    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0033 %    GNU General Public License for more details.
0034 %
0035 %    You can obtain a copy of the GNU General Public License from
0036 %    http://www.gnu.org/copyleft/gpl.html or by writing to
0037 %    Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
0038 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0039 % ...........................................
0040 function y = Benveniste(x,N,mu,rho)
0041 
0042 M = 1;% prediction horizon
0043 L = length(x)-M; % length of simulation
0044 filterinput = zeros(N,L);%input of FIR
0045 filteroutput = zeros(1,L);%output of FIR
0046 learning = zeros(1,L);% the adaptive learning rate;
0047 Phi = zeros(N,1);
0048 WVSLMS = zeros(N,1);% weight
0049 eVSLMS = zeros(1,L);% error
0050 EVSLMS = zeros(1,L);% mean square error
0051 filteroutput = zeros(1,L);% output
0052 
0053 
0054 for i = 1:L
0055     for m = 1:N
0056         if (i-m+1)>0
0057             filterinput(m,i) = x(1,i-m+1);
0058         else
0059             filterinput(m,i) = 0;
0060         end
0061     end 
0062 
0063     filteroutput(i) = transpose(filterinput(:,i)) * WVSLMS;%
0064     eVSLMS(i) = x(i+M) - filteroutput(i);%
0065     EVSLMS(i) = 10 * log10(1/2 * eVSLMS(i)' * eVSLMS(i));
0066     if i == 1
0067         learning(1) = mu;
0068         Phi = zeros(N,1);
0069     else
0070         Phi =  (eye(N,N) - learning(i-1) * conj(filterinput(:,i-1)) * transpose(filterinput(:,i-1))) * Phi + ...
0071                 eVSLMS(i-1) * conj(filterinput(:,i-1));
0072         learning(i) = learning(i-1) + rho * real(eVSLMS(i) * filterinput(:,i)'* conj(Phi));
0073     end
0074     WVSLMS = WVSLMS + learning(i) * eVSLMS(i) * conj(filterinput(:,i));
0075 end
0076 y = filteroutput;
0077 
0078 
0079

Generated on Tue 21-Apr-2009 19:50:21 by m2html © 2003